<?php

/**
 * Permite agregar, modificar y eliminar espacios reservados
 * @package simertweb
 * @subpackage controllers 
 * @category Administración
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoje@gmail.com> 
 * @version 1.0 
 */
class Configuracion_espacios_reservados extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('mpersona');
        $this->load->model('mempleado');
        $this->load->model('mrol');
        $this->load->model('msubcalles');
        $this->load->model('mcalles');
        $this->load->model('mcoordenadas');
        $this->load->model('mzona');
        $this->load->model('mespacios_reservados');
        $this->load->model('acceso');
    }

    /**
     * Muestra la interfaz para ingresar un nuevo espacio reservado
     * @param type $data3
     */
    function index($data3 = "") {
        if ($this->acceso->sesion() == 1) {
            $datax['var'] = $data3;
            $data['listasubcalles'] = $this->msubcalles->obtener_subcalles();
            $data2['listareservados'] = $this->mespacios_reservados->listar_reservados();
            $this->load->view('includes/menu_izquierdo', $datax);
            $this->load->view('includes/cabecera', $data2);
            $this->load->view('configuracion_espacios_reservados', $data);
            $this->load->view('includes/footer');
        } else {
            $this->load->view('autenticacion');
        }
    }

    /**
     * Permiter guardar un nuevo espacio reservado
     */
    function guardar() {
        $this->form_validation->set_rules('propietario', 'Propietario', 'required|callback_alpha_space|min_length[3]|max_length[100]|trim');
        $this->form_validation->set_rules('razonsocial', 'Razón Social', 'required|callback_alpha_space|min_length[3]|max_length[100]|trim');
        $this->form_validation->set_rules('numespacios', 'Número de Espacios', 'required|integer|callback_espacios|trim');

        if ($this->form_validation->run() === TRUE) {
            $this->mespacios_reservados->guardar_reservado();
            $data['message'] = '/simertweb/configuracion_espacios_reservados';
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('includes/mensaje_exito', $data);
            $this->load->view('includes/footer');
        } else {
            $this->index(FALSE);
        }
    }

    /**
     * Muestra los datos de un espacio reservado
     */
    function cargar_reservado() {
        if ($this->acceso->sesion() == 1) {
            $this->form_validation->set_rules('modificar', ' ', 'required');
            if ($this->form_validation->run() === TRUE) {
                $datax['var'] = TRUE;
                $data['reservadomodificar'] = $this->mespacios_reservados->obtener_reservado();
                $this->load->view('includes/menu_izquierdo');
                $this->load->view('includes/cabecera', $datax);
                $this->load->view('configuracion_espacios_reservados', $data);
                $this->load->view('includes/footer');
            } else {
                $this->index(FALSE);
            }
        } else {
            $this->index(FALSE);
        }
    }

    /**
     * Permite modificar la información de un espacio reservado
     */
    function modificar() {
        $this->form_validation->set_rules('codigo', ' ', 'required');
        $this->form_validation->set_rules('propietario', 'Propietario', 'required|callback_alpha_space|min_length[3]|max_length[30]|trim');
        $this->form_validation->set_rules('razonsocial', 'Razon Social', 'required|callback_alpha_space|min_length[3]|max_length[30]|trim');
        $this->form_validation->set_rules('numespacios', 'Número de Espacios', 'required|integer|callback_espacios_modificar|trim');
        $this->form_validation->set_rules('numespacios2', 'Número de Espacios', 'required');
        if ($this->form_validation->run() === TRUE) {
            $this->mespacios_reservados->actualizar_reservado();
            $data['message'] = '/CodeIgniter/index.php/configuracion_espacios_reservados';
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('includes/mensaje_exito', $data);
            $this->load->view('includes/footer');
        } else {
            $this->index(TRUE);
        }
    }

    /**
     * Permite eliminar un espacio resevado
     */
    function eliminar() {
        if ($this->acceso->sesion() == 1) {
            $this->mespacios_reservados->eliminar_reservado();
            $data['message'] = '/simertweb/configuracion_espacios_reservados';
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('includes/mensaje_exito', $data);
            $this->load->view('includes/footer');
        } else {
            $this->index(FALSE);
        }
    }

    /**
     * Válida que la cadena contenga caracteres alfabéticos, espacios y tildes
     * @param type $str_in es el parámetro que se ingresa en el formulario
     * @return boolean
     */
    function alpha_space($str_in = '') {
        if (!preg_match("/^([-a-záéíóúÁÉÍÓÚñÑ ])+$/i", $str_in)) {
            $this->form_validation->set_message('alpha_space', '<p style="color: red">El campo %s acepta solo carateres alfabéticos.</p>');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * Valida que la cantidad de espacios reservados no supere a la cantidad
     * de espacios disponibles en una subcalle
     * @param type $esp es la cantidad de espacios reservados
     * @return boolean
     */
    function espacios($esp = '') {
        if ($this->msubcalles->obtener_azules($_POST['principal']) == 0) {
            $this->form_validation->set_message('espacios', '<p style="color: red">No existe espacio en la subcalle</p>');
            return FALSE;
        } else {
            if ($esp > $this->msubcalles->obtener_azules($_POST['principal'])) {
                $this->form_validation->set_message('espacios', 'El número de espacios no debe ser mayor a ' . $this->msubcalles->obtener_azules($_POST['principal']));
                return FALSE;
            } else {
                return TRUE;
            }
        }
    }

    /**
     * Al momento de modificar, valida que la cantidad de espacios reservados no 
     * supere a la cantidad de espacios disponibles en una subcalle
     * @param type $esp es la nueva cantidad de espacios reservadoa
     * @return boolean
     */
    function espacios_modificar($esp = '') {
        if ($esp > $this->msubcalles->obtener_azules($_POST['principal']) + $_POST['numespacios2']) {
            $num = $this->msubcalles->obtener_azules($_POST['principal']) + $_POST['numespacios2'];
            $this->form_validation->set_message('espacios_modificar', 'El número de espacios no debe ser mayor a ' . $num);
            return FALSE;
        } else {
            return TRUE;
        }
    }

}

?>
